<!--
  ~ Copyright (c) 2018-2021 VMware Inc. or its affiliates, All Rights Reserved.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~   https://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<!DOCTYPE html>
<html th:replace="~{layout :: layout('home', _, ~{::meta[@name='description']}, ~{}, ~{::body})}" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta name="description" content="Project Reactor home"/>
</head>
<body>

<div class="content">
    <section id="welcome">
        <article>
            <span class="logo-reactor"></span>
            <h1>
                <strong>
                    Create Efficient Reactive Systems
                </strong>
            </h1>
            <p>
            <span>Reactor is a fourth-generation reactive library, based on the <a href="https://github.com/reactive-streams/reactive-streams-jvm">Reactive Streams</a></span><br />
            <span>specification, for building non-blocking applications on the JVM</span>
            </p>
        </article>
    </section>
    <section id="brands">
        <div class="row">
            <article>
                <div class="reactor">
                                <span class="icon">
                                    <span class="logo-reactor"></span>
                                </span>
                    <h1>Reactive Core</h1>
                    <p>
                        Reactor is <strong>fully non-blocking</strong> and provides
                        efficient demand management. It directly interacts with Java's
                        functional API, <code>CompletableFuture</code>, <code>Stream</code>, and <code>Duration</code>.
                    </p>
                </div>
            </article>
            <article>
                <div>
                                <span class="icon">
                                    <span class="logo-stream"></span>
                                </span>
                    <h1>Typed [0|1|N] Sequences</h1>
                    <p>
                        Reactor offers <strong>two reactive and composable APIs</strong>, <a
                            href="/docs/core/release/api/reactor/core/publisher/Flux.html">Flux [N]
                    </a> and  <a href="/docs/core/release/api/reactor/core/publisher/Mono.html">Mono [0|1]</a>,
                        which extensively
                        implement <a href="http://reactivex.io">Reactive Extensions</a>.
                    </p>
                </div>
            </article>
            <article>
                <div>
                                <span class="icon">
                                    <span class="logo-io"></span>
                                </span>
                    <h1>Non-Blocking IO</h1>
                    <p>
                        Well-suited for a <strong>microservices</strong>
                        architecture, Reactor offers
                        <strong>backpressure-ready
                            network engines</strong> for HTTP (including
                        Websockets), TCP, and UDP.
                    </p>
                </div>
            </article>
        </div>
    </section>
    <section id="key-features">
        <article class="turbo-message-passing">
            <div>
                <span class="icon"></span>
                <h1>Efficient Message Passing</h1>
                <p>
                    Reactor operators and schedulers can <strong>sustain high
                    throughput rates</strong>, on the order of 10's of
                    millions of messages per second. Its <b>low memory footprint</b> goes under
                    most radars. Reactor Core is the first reactive
                    library based on the joint reactive <a
                        href="https://github.com/reactor/reactive-streams-commons">research
                    effort</a> also implemented by <a href="http://reactivex.io">RxJava 2</a>.
                </p>
            </div>
        </article>
        <article class="friendly-adoption">
            <div>
                <h1>A Micro Reactive Toolkit for All</h1>
                <p>
                    Don't write Reactive Streams yourself!
                    Reactor's modules are <strong>embeddable and interoperable</strong>. They focus on
                    providing <strong>rich and functional</strong>
                    <a href="https://www.reactive-streams.org/">Reactive Streams</a>
                    APIs. You can use Reactor at any level of granularity:
                    <ul>
                        <li>in frameworks such as <a href="https://spring.io">Spring
                        </a> Boot and WebFlux</li>
                        <li>in drivers and clients such as the <a href="https://github.com/cloudfoundry/cf-java-client">CloudFoundry Java Client</a></li>
                        <li>in contracts or protocols such as <a href="http://rsocket.io">RSocket</a> and <a href="https://r2dbc.io">R2DBC</a></li>
                    </ul>

                </p>
            </div>
        </article>
        <article class="guardian-of-the-latency">
            <div>
                <span class="icon"></span>
                <h1>Guardians of the Latency</h1>
                <p style="margin-bottom: 0">Scaling out is an important tool for overcoming latency and slow microservices.
                    Cloud native apps and serverless functions have a better
                    chance at effective scale-out with asynchronous architectures.
                    To assist in asynchronous designs, Reactor offers non-blocking and
                    backpressure-ready network runtimes, including local
                    TCP/HTTP/UDP clients and servers, based on the robust <a
                            href="https://netty.io/">Netty</a> framework.
                </p>
            </div>
        </article>
    </section>
</div>

</body>
</html>
